package com.juzipi.common.core;

import com.juzipi.common.constant.json.ResultCode;
import com.juzipi.common.tools.Result;
import com.juzipi.common.tools.ResultTool;
import com.juzipi.common.utils.StringUtils;
import org.springframework.security.core.parameters.P;

import java.util.Arrays;
import java.util.List;

/**
 * controller通用数据处理
 */

public class BaseController {


    /**
     * 响应插入等操作的返回结果
     * @param rows
     * @return
     */
    protected Result toResult(Integer rows) {
        //如果返回数据大于0就返回成功，否则就失败
        return rows > 0 ? ResultTool.successCustomize(ResultCode.SUCCESS) : ResultTool.failCustomize(ResultCode.FAIL);
    }


    /**
     * 判断是否唯一
     * @param unique service层返回的结果
     * @return 判断后返回的结果集
     */
    protected Result checkUniqueResult(Object unique) {
        //判断object值解析后长度是否大于1,以此来确定是数字还是返回的不唯一的字段
        if (unique.toString().length() == 1) {
            int i = Integer.parseInt(String.valueOf(unique));
            //转换为Integer类型转给toResult执行
            return i > 0 ? ResultTool.successCustomize(ResultCode.SUCCESS) : ResultTool.failCustomize(ResultCode.FAIL);
        }
        //大于1就表示它返回的是具体重复的值,把它返回给前端
        return ResultTool.failCustomize(ResultCode.FAIL, unique.toString());

    }


    /**
     * 判断是否唯一的
     * @param unique 验证返回的值
     * @param field 单个的字段
     * @return 判断后返回的结果集
     */
    protected Result checkUniqueResult(Object unique, String field) {
        //根据传过来的字段查询出的值大于0就是已存在此值，返回错误信息，不存在就调用toResult
        if (unique.toString().length() == 1) {
            Integer i = Integer.parseInt(String.valueOf(unique));
            toResult(i);
        }
        return ResultTool.failCustomize(ResultCode.FAIL, field);
    }


    /**
     * 判断查询出的list是否为空
     * @param list 集合
     * @return 判断后返回的结果集
     */
    protected Result JudgeResult(List<?> list) {
        return StringUtils.isNotEmpty(list) ? ResultTool.successCustomize(ResultCode.QUERY_SUCCESSFULLY,list) : ResultTool.failCustomize(ResultCode.QUERY_FAIL);
    }


    /**
     * 判断查询出的单个对象是否为空
     * @param object 对象
     * @return 判断后返回的结果集
     */
    protected Result JudgeResult(Object object) {
        return StringUtils.isNull(object) ? ResultTool.failCustomize(ResultCode.FAIL) : ResultTool.successCustomize(ResultCode.SUCCESS,object);
    }


    /**
     * 判断查询出的字符串是否为空
     * @param string 字符串
     * @return 判断后返回的结果集
     */
    protected Result JudgeResult(String string) {
        return StringUtils.isEmpty(string) ? ResultTool.failCustomize(ResultCode.FAIL) : ResultTool.successCustomize(ResultCode.SUCCESS,string);
    }


    /**
     * 判断查询出的字符串是否为空 自定义错误消息
     * @param string 判断的字符串
     * @param failMessage 定义错误信息
     * @return 判断后返回的结果集
     */
    protected Result JudgeResult(String string, String failMessage) {
        return StringUtils.isEmpty(string) ? ResultTool.failCustomize(ResultCode.FAIL,failMessage) : ResultTool.successCustomize(ResultCode.SUCCESS,string);
    }


    /**
     * 判断传入的布尔类型
     * @param aBoolean 布尔
     * @return result结果集
     */
    protected Result JudgeBooleanResult(Boolean aBoolean) {
        return aBoolean ? ResultTool.success() : ResultTool.fail();
    }


}
